{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from sklearn.metrics import roc_auc_score\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "from lightgbm import *\n",
    "from shaphypetune import BoostSearch, BoostBoruta, BoostRFE\n",
    "\n",
    "import warnings\n",
    "warnings.simplefilter('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(10000, 12)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CustomerId</th>\n",
       "      <th>CreditScore</th>\n",
       "      <th>Geography</th>\n",
       "      <th>Gender</th>\n",
       "      <th>Age</th>\n",
       "      <th>Tenure</th>\n",
       "      <th>Balance</th>\n",
       "      <th>NumOfProducts</th>\n",
       "      <th>HasCrCard</th>\n",
       "      <th>IsActiveMember</th>\n",
       "      <th>EstimatedSalary</th>\n",
       "      <th>Exited</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RowNumber</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>15634602</td>\n",
       "      <td>619</td>\n",
       "      <td>France</td>\n",
       "      <td>Female</td>\n",
       "      <td>42</td>\n",
       "      <td>2</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>101348.88</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>15647311</td>\n",
       "      <td>608</td>\n",
       "      <td>Spain</td>\n",
       "      <td>Female</td>\n",
       "      <td>41</td>\n",
       "      <td>1</td>\n",
       "      <td>83807.86</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>112542.58</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>15619304</td>\n",
       "      <td>502</td>\n",
       "      <td>France</td>\n",
       "      <td>Female</td>\n",
       "      <td>42</td>\n",
       "      <td>8</td>\n",
       "      <td>159660.80</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113931.57</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>15701354</td>\n",
       "      <td>699</td>\n",
       "      <td>France</td>\n",
       "      <td>Female</td>\n",
       "      <td>39</td>\n",
       "      <td>1</td>\n",
       "      <td>0.00</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>93826.63</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>15737888</td>\n",
       "      <td>850</td>\n",
       "      <td>Spain</td>\n",
       "      <td>Female</td>\n",
       "      <td>43</td>\n",
       "      <td>2</td>\n",
       "      <td>125510.82</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>79084.10</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           CustomerId  CreditScore Geography  Gender  Age  Tenure    Balance  \\\n",
       "RowNumber                                                                      \n",
       "1            15634602          619    France  Female   42       2       0.00   \n",
       "2            15647311          608     Spain  Female   41       1   83807.86   \n",
       "3            15619304          502    France  Female   42       8  159660.80   \n",
       "4            15701354          699    France  Female   39       1       0.00   \n",
       "5            15737888          850     Spain  Female   43       2  125510.82   \n",
       "\n",
       "           NumOfProducts  HasCrCard  IsActiveMember  EstimatedSalary  Exited  \n",
       "RowNumber                                                                     \n",
       "1                      1          1               1        101348.88       1  \n",
       "2                      1          0               1        112542.58       0  \n",
       "3                      3          1               0        113931.57       1  \n",
       "4                      2          0               0         93826.63       0  \n",
       "5                      1          1               1         79084.10       0  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### READ DATA ###\n",
    "\n",
    "df = pd.read_csv(\"Churn Modeling.csv\", index_col='RowNumber')\n",
    "df.drop(['Surname'], axis=1, inplace=True)\n",
    "\n",
    "print(df.shape)\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "### CONVERT CATEGORICAL COLUMNS ###\n",
    "\n",
    "cat_cols = list(df.head().select_dtypes(object).columns)\n",
    "df[cat_cols] = df[cat_cols].astype(\"category\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "### ADD RANDOM ARTIFICIAL FEATURES ###\n",
    "\n",
    "np.random.seed(123)\n",
    "\n",
    "for c in range(1,6):\n",
    "    df[f\"RANDOM_{c}\"] = np.random.normal(0,5, (df.shape[0],1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "### DEFINE TUNING VARIABLES ###\n",
    "\n",
    "param_grid = {\n",
    "    'n_estimators': 200,\n",
    "    'learning_rate': [0.3, 0.2, 0.1],\n",
    "    'num_leaves': [20, 25, 30]\n",
    "}\n",
    "\n",
    "\n",
    "def AUC(y_true, y_hat):\n",
    "    return 'auc', roc_auc_score(y_true, y_hat), True\n",
    "\n",
    "lgbm = LGBMClassifier(random_state=0, n_jobs=-1)\n",
    "\n",
    "n_trials = 10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "----- TRIAL 1 -----\n",
      "----- TRIAL 2 -----\n",
      "----- TRIAL 3 -----\n",
      "----- TRIAL 4 -----\n",
      "----- TRIAL 5 -----\n",
      "----- TRIAL 6 -----\n",
      "----- TRIAL 7 -----\n",
      "----- TRIAL 8 -----\n",
      "----- TRIAL 9 -----\n",
      "----- TRIAL 10 -----\n"
     ]
    }
   ],
   "source": [
    "### TUNE PARAMETERS AND EXTRACT IMPORTANCES ###\n",
    "\n",
    "importances = np.zeros((df.shape[1]-1,))\n",
    "\n",
    "for i in range(n_trials):\n",
    "    \n",
    "    print(\"----- TRIAL {} -----\".format(i+1))\n",
    "\n",
    "    X_train, X_test, y_train, y_test = train_test_split(\n",
    "        df.drop(['Exited'], axis=1), df['Exited'], test_size=0.5, shuffle=True, random_state=i)\n",
    "\n",
    "    X_train, X_valid, y_train, y_valid = train_test_split(\n",
    "        X_train, y_train, test_size=0.2, shuffle=True, random_state=i)\n",
    "\n",
    "    model = BoostSearch(lgbm, param_grid=param_grid, greater_is_better=True, verbose=0)\n",
    "    model.fit(X_train, y_train, eval_set=[(X_valid, y_valid)], eval_metric=AUC, early_stopping_rounds=4, verbose=0)\n",
    "    \n",
    "    importances += model.estimator_.feature_importances_\n",
    "    \n",
    "importances /= n_trials"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "### PLOT IMPORTANCES ###\n",
    "\n",
    "imp_id = np.argsort(importances)\n",
    "\n",
    "plt.figure(figsize=(8,6))\n",
    "plt.barh(range(len(importances)), importances[imp_id], \n",
    "         color=['red' if 'RANDOM' in c else 'blue' for c in X_train.columns[imp_id]])\n",
    "plt.yticks(range(len(importances)), X_train.columns[imp_id])\n",
    "plt.xlabel('importance')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "----- TRIAL 1 -----\n",
      "----- TRIAL 2 -----\n",
      "----- TRIAL 3 -----\n",
      "----- TRIAL 4 -----\n",
      "----- TRIAL 5 -----\n",
      "----- TRIAL 6 -----\n",
      "----- TRIAL 7 -----\n",
      "----- TRIAL 8 -----\n",
      "----- TRIAL 9 -----\n",
      "----- TRIAL 10 -----\n"
     ]
    }
   ],
   "source": [
    "### TUNE PARAMETERS PLUS RFE AND EXTRACT SUPPORTS ###\n",
    "\n",
    "supports = np.zeros((df.shape[1]-1,))\n",
    "\n",
    "for i in range(n_trials):\n",
    "    \n",
    "    print(\"----- TRIAL {} -----\".format(i+1))\n",
    "\n",
    "    X_train, X_valid, y_train, y_valid = train_test_split(\n",
    "        df.drop(['Exited'], axis=1), df['Exited'], test_size=0.5, shuffle=True, random_state=i)\n",
    "\n",
    "    model = BoostRFE(lgbm, min_features_to_select=1, step=1, param_grid=param_grid, greater_is_better=True, verbose=0)\n",
    "    model.fit(X_train, y_train, eval_set=[(X_valid, y_valid)], eval_metric=AUC, early_stopping_rounds=5, verbose=0)\n",
    "\n",
    "    supports += model.support_.astype(int)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "### PLOT VARIABLE SUPPORTS OVER TRIALS ###\n",
    "\n",
    "plt.figure(figsize=(8,6))\n",
    "plt.barh(range(len(supports)), supports, \n",
    "         color=['red' if 'RANDOM' in c else 'blue' for c in X_train])\n",
    "plt.yticks(range(len(supports)), X_train.columns); plt.xlabel('trials')\n",
    "plt.title('how many times a feature is selected')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "----- TRIAL 1 -----\n",
      "----- TRIAL 2 -----\n",
      "----- TRIAL 3 -----\n",
      "----- TRIAL 4 -----\n",
      "----- TRIAL 5 -----\n",
      "----- TRIAL 6 -----\n",
      "----- TRIAL 7 -----\n",
      "----- TRIAL 8 -----\n",
      "----- TRIAL 9 -----\n",
      "----- TRIAL 10 -----\n"
     ]
    }
   ],
   "source": [
    "### TUNE PARAMETERS PLUS BORUTA AND EXTRACT SUPPORTS ###\n",
    "\n",
    "supports = np.zeros((df.shape[1]-1,))\n",
    "\n",
    "for i in range(n_trials):\n",
    "    \n",
    "    print(\"----- TRIAL {} -----\".format(i+1))\n",
    "\n",
    "    X_train, X_valid, y_train, y_valid = train_test_split(\n",
    "        df.drop(['Exited'], axis=1), df['Exited'], test_size=0.5, shuffle=True, random_state=i)\n",
    "\n",
    "    model = BoostBoruta(lgbm, perc=100, alpha=0.05, max_iter=100, param_grid=param_grid, greater_is_better=True, verbose=0)\n",
    "    model.fit(X_train, y_train, eval_set=[(X_valid, y_valid)], eval_metric=AUC, early_stopping_rounds=5, verbose=0)\n",
    "\n",
    "    supports += model.support_.astype(int)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "### PLOT VARIABLE SUPPORTS OVER TRIALS ###\n",
    "\n",
    "plt.figure(figsize=(8,6))\n",
    "plt.barh(range(len(supports)), supports, \n",
    "         color=['red' if 'RANDOM' in c else 'blue' for c in X_train])\n",
    "plt.yticks(range(len(supports)), X_train.columns); plt.xlabel('trials')\n",
    "plt.title('how many times a feature is selected')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "----- TRIAL 1 -----\n",
      "----- TRIAL 2 -----\n",
      "----- TRIAL 3 -----\n",
      "----- TRIAL 4 -----\n",
      "----- TRIAL 5 -----\n",
      "----- TRIAL 6 -----\n",
      "----- TRIAL 7 -----\n",
      "----- TRIAL 8 -----\n",
      "----- TRIAL 9 -----\n",
      "----- TRIAL 10 -----\n"
     ]
    }
   ],
   "source": [
    "### TUNE PARAMETERS PLUS RFE WITH SHAP AND EXTRACT SUPPORTS ###\n",
    "\n",
    "supports = np.zeros((df.shape[1]-1,))\n",
    "\n",
    "for i in range(n_trials):\n",
    "    \n",
    "    print(\"----- TRIAL {} -----\".format(i+1))\n",
    "\n",
    "    X_train, X_valid, y_train, y_valid = train_test_split(\n",
    "        df.drop(['Exited'], axis=1), df['Exited'], test_size=0.5, shuffle=True, random_state=i)\n",
    "\n",
    "    model = BoostRFE(lgbm, min_features_to_select=1, step=1, param_grid=param_grid, greater_is_better=True,\n",
    "                     importance_type='shap_importances', train_importance=False, verbose=0)\n",
    "    model.fit(X_train, y_train, eval_set=[(X_valid, y_valid)], eval_metric=AUC, early_stopping_rounds=5, verbose=0)\n",
    "\n",
    "    supports += model.support_.astype(int)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "### PLOT VARIABLE SUPPORTS OVER TRIALS ###\n",
    "\n",
    "plt.figure(figsize=(8,6))\n",
    "plt.barh(range(len(supports)), supports, \n",
    "         color=['red' if 'RANDOM' in c else 'blue' for c in X_train])\n",
    "plt.yticks(range(len(supports)), X_train.columns); plt.xlabel('trials')\n",
    "plt.title('how many times a feature is selected')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "----- TRIAL 1 -----\n",
      "----- TRIAL 2 -----\n",
      "----- TRIAL 3 -----\n",
      "----- TRIAL 4 -----\n",
      "----- TRIAL 5 -----\n",
      "----- TRIAL 6 -----\n",
      "----- TRIAL 7 -----\n",
      "----- TRIAL 8 -----\n",
      "----- TRIAL 9 -----\n",
      "----- TRIAL 10 -----\n"
     ]
    }
   ],
   "source": [
    "### TUNE PARAMETERS PLUS BORUTA WITH SHAP AND EXTRACT SUPPORTS ###\n",
    "\n",
    "supports = np.zeros((df.shape[1]-1,))\n",
    "\n",
    "for i in range(n_trials):\n",
    "    \n",
    "    print(\"----- TRIAL {} -----\".format(i+1))\n",
    "\n",
    "    X_train, X_valid, y_train, y_valid = train_test_split(\n",
    "        df.drop(['Exited'], axis=1), df['Exited'], test_size=0.5, shuffle=True, random_state=i)\n",
    "\n",
    "    model = BoostBoruta(lgbm, perc=100, alpha=0.05, max_iter=100, param_grid=param_grid, greater_is_better=True,\n",
    "                        importance_type='shap_importances', train_importance=False, verbose=0)\n",
    "    model.fit(X_train, y_train, eval_set=[(X_valid, y_valid)], eval_metric=AUC, early_stopping_rounds=5, verbose=0)\n",
    "\n",
    "    supports += model.support_.astype(int)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "### PLOT VARIABLE SUPPORTS OVER TRIALS ###\n",
    "\n",
    "plt.figure(figsize=(8,6))\n",
    "plt.barh(range(len(supports)), supports, \n",
    "         color=['red' if 'RANDOM' in c else 'blue' for c in X_train])\n",
    "plt.yticks(range(len(supports)), X_train.columns); plt.xlabel('trials')\n",
    "plt.title('how many times a feature is selected')\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
